package cn.qzzg.common;

import cn.qzzg.enums.CodeEnum;
import lombok.*;

import java.io.Serializable;

/**
 * 统一返回结果
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ResultBean<T> implements Serializable {
    private T data;        // 数据源
    private String code;   // 响应码
    private String message;    // 提示信息

    /**
     * 请求成功
     *
     * @param data 需要返回的数据对象
     */
    @SneakyThrows
    public static <T> ResultBean<Object> success(T data) {
        return ResultBean.builder()
                .code(CodeEnum.SUCCESS.getCode())
                .data(data)
                .message(CodeEnum.SUCCESS.getDescription()).build();
    }

    /**
     * 请求成功 (不需要返回数据)
     */
    public static <T> ResultBean<Object> success() {
        return success(null);
    }

    /**
     * 请求失败
     *
     * @param code 响应码
     */
    @SneakyThrows
    public static <T> ResultBean<Object> error(CodeEnum code) {
        return ResultBean.builder()
                .code(code.getCode())
                .message(code.getDescription()).build();
    }

    @SneakyThrows
    public static <T> ResultBean<Object> error(String errorCode,String errorMsg) {
        return ResultBean.builder()
                .code(errorCode)
                .message(errorMsg).build();
    }
}

